#include "../code/sistemas.h"

/* Prueba la descomposición PLU para distintas matrices. */
int main(int argc, char* argv[])
{
    srand(NULL);
    
    ofstream salida("resolucionRandomDatos.out");
    salida.precision(20);
	salida.setf(std::ios_base::scientific, std::ios_base::floatfield); 
    
    fornx(n, 2, 51)
    {
		/* Generar matriz de nxn y vector de n */
		Matriz m (n, Vector(n));
		Vector v (n);
		
		/* Resultados. */
		Vector res (n);
		Vector x (n);
		
		/* La dimensión. */
		salida << n << endl;		
		
		forn(i, 100)
		{
			/* Llenar la matríz y el vector de números random. */	
			generarMatriz(m, n);			
			generarVector(v, n);	
			matrizPorVector(m, v, res, n);
			
			/* Resolver el sistema. */
			PLUPivoteo(m, res, x, n);			

			/* La distancia euclideana entre el valor de x obtenido y v (valor real). */			
			salida << dist(v, x, n) << " ";			
		}
		
		salida << endl;
	}
	
	salida.close();
    
    return 0;
}
